Some cluster-based or distributed computer networks require high data availability or fault tolerance. Such networks typically comprise a number of databases which have to be synchronised continually, so that there is intermittent replication of data on one database in another database. In a typical example, the network may have one publisher database and a plurality of subscriber databases. Changes in data on a subscriber database are replicated on the publisher database, and the subscriber databases are then synchronised with the publisher database when data has been changed or updated. In a customer contact centre, for example, data on the subscriber databases is continually updated as new telephone calls are made and received, and the subscriber database is synchronised with the publisher database. The synchronisation can occur as soon as possible, subject to the queuing of closely spaced changes on respective subscriber databases, but may also occur at pre-defined synchronisation intervals.
Also, it is undesirable to have network downtime, so that when the publisher database fails, one of the subscriber databases automatically assumes the role of publisher database, the contents of the publisher database having been replicated on that subscriber database. When the old publisher database recovers, the contents of the subscriber database are synchronised with the new publisher database, and the old publisher database resumes its normal function.
In instances where historical reports are generated from the databases, it may be important to obtain reports with high data integrity, as the historical reports are used to evaluate system and personnel performance as well as plan future staffing and operations of the contact centre.
The replication and synchronisation processes introduce latency into the data integrity. It is not always practical or even possible to synchronise the databases immediately, and synchronising events sometimes need to be queued. Thus, a historical report doesn't always reflect the most updated recent data, for example when the data on at least one subscriber database has not yet been synchronised with the publisher database, or vice versa. A person viewing a report generated with reference to one of these databases has no way of knowing whether or not the report reflects the most updated recent data.